home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / stdio / RCS / StdioFileOpenMode.c,v < prev    next >
Text File  |  1991-12-02  |  3KB  |  170 lines

  1. head     1.3;
  2. branch   ;
  3. access   ;
  4. symbols  sprited:1.3.1;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.3
  10. date     89.03.10.18.50.51;  author douglis;  state Exp;
  11. branches 1.3.1.1;
  12. next     1.2;
  13.  
  14. 1.2
  15. date     88.09.29.20.53.26;  author douglis;  state Exp;
  16. branches ;
  17. next     1.1;
  18.  
  19. 1.1
  20. date     88.06.10.16.23.31;  author ouster;  state Exp;
  21. branches ;
  22. next     ;
  23.  
  24. 1.3.1.1
  25. date     91.12.02.19.53.55;  author kupfer;  state Exp;
  26. branches ;
  27. next     ;
  28.  
  29.  
  30. desc
  31. @@
  32.  
  33.  
  34. 1.3
  35. log
  36. @removed specification of O_APPEND for "a" mode, to be
  37. unix-compatible.
  38. @
  39. text
  40. @/* 
  41.  * StdioFileOpenMode.c --
  42.  *
  43.  *    Source code for the "StdioFileOpenMode" procedur used internally
  44.  *    in the stdio library.
  45.  *
  46.  * Copyright 1988 Regents of the University of California
  47.  * Permission to use, copy, modify, and distribute this
  48.  * software and its documentation for any purpose and without
  49.  * fee is hereby granted, provided that the above copyright
  50.  * notice appear in all copies.  The University of California
  51.  * makes no representations about the suitability of this
  52.  * software for any purpose.  It is provided "as is" without
  53.  * express or implied warranty.
  54.  */
  55.  
  56. #ifndef lint
  57. static char rcsid[] = "$Header: /sprite/src/lib/c/stdio/RCS/StdioFileOpenMode.c,v 1.2 88/09/29 20:53:26 douglis Exp Locker: douglis $ SPRITE (Berkeley)";
  58. #endif not lint
  59.  
  60. #include "stdio.h"
  61. #include "fileInt.h"
  62. #include "stdlib.h"
  63. #include <sys/file.h>
  64.  
  65. /*
  66.  *----------------------------------------------------------------------
  67.  *
  68.  * StdioFileOpenMode --
  69.  *
  70.  *    Given an access mode string, return the corresponding flags to
  71.  *    pass to open.
  72.  *
  73.  * Results:
  74.  *    The return value is a the flags to pass to open when opening
  75.  *    a file in the given access mode.  -1 is returned if the
  76.  *    access string isn't legal.
  77.  *
  78.  * Side effects:
  79.  *    None.
  80.  *
  81.  *----------------------------------------------------------------------
  82.  */
  83.  
  84. int
  85. StdioFileOpenMode(access)
  86.     char *access;        /* Indicates type of access, as passed
  87.                  * to fopen and freopen. */
  88. {
  89.     int     flags;
  90.     char    nextChar;
  91.  
  92.     nextChar = access[1];
  93.     if (nextChar == 'b') {
  94.     nextChar = access[2];
  95.     }
  96.     switch (access[0]) {
  97.     case 'r':
  98.         if (nextChar == '+') {
  99.         flags = O_RDWR;
  100.         } else {
  101.         flags = O_RDONLY;
  102.         }
  103.         break;
  104.     case 'w':
  105.         if (nextChar == '+') {
  106.         flags = O_RDWR | O_CREAT | O_TRUNC;
  107.         } else {
  108.         flags = O_WRONLY | O_CREAT | O_TRUNC;
  109.         }
  110.         break;
  111.     case 'a':
  112.         if (nextChar == '+') {
  113.         flags = O_CREAT | O_RDWR;
  114.         } else {
  115.         flags = O_CREAT | O_WRONLY;
  116.         }
  117.         break;
  118.     default:
  119.         return -1;
  120.         break;
  121.     }
  122.     return flags;
  123. }
  124. @
  125.  
  126.  
  127. 1.3.1.1
  128. log
  129. @Initial branch for Sprite server.
  130. @
  131. text
  132. @d18 1
  133. a18 1
  134. static char rcsid[] = "$Header: /sprite/src/lib/c/stdio/RCS/StdioFileOpenMode.c,v 1.3 89/03/10 18:50:51 douglis Exp $ SPRITE (Berkeley)";
  135. @
  136.  
  137.  
  138. 1.2
  139. log
  140. @added O_CREAT flag to append-mode writes.
  141. @
  142. text
  143. @d18 1
  144. a18 1
  145. static char rcsid[] = "$Header: StdioFileOpenMode.c,v 1.1 88/06/10 16:23:31 ouster Exp $ SPRITE (Berkeley)";
  146. d74 1
  147. a74 1
  148.         flags = O_CREAT | O_RDWR | O_APPEND;
  149. d76 1
  150. a76 1
  151.         flags = O_CREAT | O_WRONLY | O_APPEND;
  152. @
  153.  
  154.  
  155. 1.1
  156. log
  157. @Initial revision
  158. @
  159. text
  160. @d18 1
  161. a18 1
  162. static char rcsid[] = "$Header: atoi.c,v 1.1 88/04/28 17:20:23 ouster Exp $ SPRITE (Berkeley)";
  163. d74 1
  164. a74 1
  165.         flags = O_RDWR|O_APPEND;
  166. d76 1
  167. a76 1
  168.         flags = O_WRONLY|O_APPEND;
  169. @
  170.